package com.zyp.demo.web.admin;

import com.zyp.demo.po.Type;
import com.zyp.demo.service.TypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.web.PageableDefault;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import javax.validation.Valid;

@Controller
@RequestMapping("/admin")
public class TypesController {
  @Autowired
  private  TypeService typeService;
    @GetMapping("/types")
    public String types(@PageableDefault(size = 5,sort = {"id"},direction = Sort.Direction.DESC)
                        Pageable pageable, Model model){
        model.addAttribute("page",typeService.listType(pageable));//查询的第一页数据放在model
        return "admin/types";
    }
    @GetMapping("/types/input")
    public String types_input(Model model){
        model.addAttribute("type", new Type());
        return "admin/types-input";
    }
    @PostMapping("/types")
     public String post(@Valid Type type, RedirectAttributes attributes){
        Type t = typeService.saveType(type);

        if (t==null){
            //相同的分类无法添加，保存不成功
            attributes.addFlashAttribute("message","添加失败");
        }else {
            //保存成功
            attributes.addFlashAttribute("message","添加成功");
        }
        return "redirect:/admin/types";
     }
     //修改分类信息
    @GetMapping("/types/{id}/input")
    public String editInput(@PathVariable Long id,Model model){
       model.addAttribute("type", typeService.getType(id));
       return "admin/types-input";
    }
    @PostMapping("/types/{id}")
    public String editTypes(@PathVariable Long id,@Valid Type type,
                            RedirectAttributes attributes){
        System.out.println(id);
    Type t = typeService.updateType(id,type);
              if (t==null){
               attributes.addFlashAttribute("message","更新失败");
              }else{
                  attributes.addFlashAttribute("message","更新成功");
              }
       return "redirect:/admin/types";
    }
    @GetMapping("/types/{id}/delete")
    public String delete(@PathVariable Long id){
        typeService.deleteType(id);
        return "redirect:/admin/types";
    }

}
